package com.rybbaby.tss.platform.sysHandleLog.entity;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Version;

import com.rybbaby.tss.core.utils.StringUtils;
import com.rybbaby.tss.platform.sysAdminUser.entity.SysAdminUser;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.GenericGenerator;


/**
 * @description 操作日志
 * 
 * @author 谢进伟
 * 
 * @createDate 2016-12-13 上午10:53:51
 */
@Entity
@Table(name = "sys_handle_log")
@DynamicUpdate(true)
@DynamicInsert(true)
public class SysHandleLog implements Serializable {
	
	private static final long serialVersionUID = 7082304881454L;
	
	/** 主键 **/
	private String id;
	/** 登录者Id **/
	private String adminUserId;
	/** 控制器名称 **/
	private String controllerName;
	/** 请求方法 **/
	private String method;
	/** 请求路径 **/
	private String requestURI;
	/** 请求时间 **/
	private java.sql.Timestamp requestTime;
	/** 请求参数 **/
	private String params;
	/** 响应时间 **/
	private java.sql.Timestamp responseTime;
	/** 响应信息 **/
	private String responseInfo;
	/** 处理时长 **/
	private String duration;
	/** 日志信息 **/
	private String logContent;
	/** 客户端IP **/
	private String clientIp;
	/** 处理结果 **/
	private String handlingResult;
	/** 版本 **/
	private Integer version;
	/** 登录者Id **/
	private SysAdminUser adminUser;
	
	/**
	 * 方法: 取得登录者Id
	 *
	 * @return SysAdminUser 登录者Id
	 */
	@JoinColumn(name = "adminUserId" , insertable = false , updatable = false)
	@ManyToOne(fetch = FetchType.LAZY , targetEntity = SysAdminUser.class)
	public SysAdminUser getAdminUser() {
		return this.adminUser;
	}
	
	/**
	 * 方法: 设置登录者Id
	 *
	 * @param adminUser
	 *            登录者Id
	 */
	public void setAdminUser(SysAdminUser adminUser) {
		this.adminUser = adminUser;
	}
	
	/**
	 * 方法: 取得主键
	 *
	 * @return java.lang.String 主键
	 */
	@Id
	@GeneratedValue(generator = "sys_handle_logIDGenerator" , strategy = GenerationType.AUTO)
	@GenericGenerator(name = "sys_handle_logIDGenerator" , strategy = "uuid")
	@Column(name = "id" , nullable = false , length = 32)
	public String getId() {
		return this.id;
	}
	
	/**
	 * 方法: 设置主键
	 *
	 * @param id
	 *            主键
	 */
	public void setId(String id) {
		this.id = id;
	}
	
	/**
	 * 方法: 取得登录者Id
	 *
	 * @return java.lang.String 登录者Id
	 */
	@Column(name = "adminUserId" , nullable = true , length = 32)
	public String getAdminUserId() {
		return this.adminUserId;
	}
	
	/**
	 * 方法: 设置登录者Id
	 *
	 * @param adminUserId
	 *            登录者Id
	 */
	public void setAdminUserId(String adminUserId) {
		this.adminUserId = StringUtils.isBlank(adminUserId) ? null : adminUserId;
	}
	
	/**
	 * 方法: 取得控制器名称
	 *
	 * @return java.lang.String 控制器名称
	 */
	@Column(name = "controllerName" , nullable = true , length = 255)
	public String getControllerName() {
		return this.controllerName;
	}
	
	/**
	 * 方法: 设置控制器名称
	 *
	 * @param controllerName
	 *            控制器名称
	 */
	public void setControllerName(String controllerName) {
		this.controllerName = controllerName;
	}
	
	/**
	 * 方法: 取得请求方法
	 *
	 * @return java.lang.String 请求方法
	 */
	@Column(name = "method" , nullable = true , length = 1000)
	public String getMethod() {
		return this.method;
	}
	
	/**
	 * 方法: 设置请求方法
	 *
	 * @param method
	 *            请求方法
	 */
	public void setMethod(String method) {
		this.method = method;
	}
	
	/**
	 * 方法: 取得请求路径
	 *
	 * @return java.lang.String 请求路径
	 */
	@Column(name = "requestURI" , nullable = true , length = 100)
	public String getRequestURI() {
		return this.requestURI;
	}
	
	/**
	 * 方法: 设置请求路径
	 *
	 * @param requestURI
	 *            请求路径
	 */
	public void setRequestURI(String requestURI) {
		this.requestURI = requestURI;
	}
	
	/**
	 * 方法: 取得请求时间
	 *
	 * @return java.sql.Timestamp 请求时间
	 */
	@Column(name = "requestTime" , nullable = true , length = 19)
	public java.sql.Timestamp getRequestTime() {
		return this.requestTime;
	}
	
	/**
	 * 方法: 设置请求时间
	 *
	 * @param requestTime
	 *            请求时间
	 */
	public void setRequestTime(java.sql.Timestamp requestTime) {
		this.requestTime = requestTime;
	}
	
	/**
	 * 方法: 取得请求参数
	 *
	 * @return java.lang.String 请求参数
	 */
	@Column(name = "params" , nullable = true , length = 1000)
	public String getParams() {
		return this.params;
	}
	
	/**
	 * 方法: 设置请求参数
	 *
	 * @param params
	 *            请求参数
	 */
	public void setParams(String params) {
		this.params = params;
	}
	
	/**
	 * 方法: 取得响应时间
	 *
	 * @return java.sql.Timestamp 响应时间
	 */
	@Column(name = "responseTime" , nullable = true , length = 19)
	public java.sql.Timestamp getResponseTime() {
		return this.responseTime;
	}
	
	/**
	 * 方法: 设置响应时间
	 *
	 * @param responseTime
	 *            响应时间
	 */
	public void setResponseTime(java.sql.Timestamp responseTime) {
		this.responseTime = responseTime;
	}
	
	/**
	 * 方法: 取得响应信息
	 *
	 * @return java.lang.String 响应信息
	 */
	@Column(name = "responseInfo" , nullable = true , length = 10)
	public String getResponseInfo() {
		return this.responseInfo;
	}
	
	/**
	 * 方法: 设置响应信息
	 *
	 * @param responseInfo
	 *            响应信息
	 */
	public void setResponseInfo(String responseInfo) {
		this.responseInfo = responseInfo;
	}
	
	/**
	 * 方法: 取得处理时长
	 *
	 * @return java.lang.String 处理时长
	 */
	@Column(name = "duration" , nullable = true , length = 100)
	public String getDuration() {
		return this.duration;
	}
	
	/**
	 * 方法: 设置处理时长
	 *
	 * @param duration
	 *            处理时长
	 */
	public void setDuration(String duration) {
		this.duration = duration;
	}
	
	/**
	 * 方法: 取得日志信息
	 *
	 * @return java.lang.String 日志信息
	 */
	@Column(name = "logContent" , nullable = true , length = 1000)
	public String getLogContent() {
		return this.logContent;
	}
	
	/**
	 * 方法: 设置日志信息
	 *
	 * @param logContent
	 *            日志信息
	 */
	public void setLogContent(String logContent) {
		this.logContent = logContent;
	}
	
	/**
	 * 方法: 取得客户端IP
	 *
	 * @return java.lang.String 客户端IP
	 */
	@Column(name = "clientIp" , nullable = true , length = 20)
	public String getClientIp() {
		return this.clientIp;
	}
	
	/**
	 * 方法: 设置客户端IP
	 *
	 * @param clientIp
	 *            客户端IP
	 */
	public void setClientIp(String clientIp) {
		this.clientIp = clientIp;
	}
	
	/**
	 * 方法: 取得处理结果
	 *
	 * @return java.lang.String 处理结果
	 */
	public String getHandlingResult() {
		return handlingResult;
	}
	
	/**
	 * 方法: 设置处理结果
	 *
	 * @param handlingResult
	 *            处理结果
	 */
	public void setHandlingResult(String handlingResult) {
		this.handlingResult = handlingResult;
	}
	
	/**
	 * 方法: 取得版本
	 *
	 * @return java.lang.Integer 版本
	 */
	@Version
	@Column(name = "version" , nullable = true , length = 11)
	public Integer getVersion() {
		return this.version;
	}
	
	/**
	 * 方法: 设置版本
	 *
	 * @param version
	 *            版本
	 */
	public void setVersion(Integer version) {
		this.version = version;
	}
}